package team.niit.dao;

import team.niit.entity.StudentEntity;

import java.util.List;

/**
 * @Author: 然然然儿呐_
 * @PackageName team.niit.service
 * @Description: TO DO
 * @Date 2021/11/28 11:18
 */
public interface StudentDAO {

    /**
     * @param id       学号
     * @param password 密码
     * @return 是否成功
     */
    Object login(String id, String password);


    /**
     * 修改密码
     * @param id 工号
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @return 返回成功与否
     */
    boolean modifyPassword(String id, String oldPassword, String newPassword);



    /**
     * 重置密码
     * @param id 学号
     * @param password 新密码
     * @param phone 手机号
     * @return 返回成功与否
     */
    boolean retrievePassword(String id, String password, String phone);

    /**
     * 按id查询学生
     * @param id 学生id
     * @return 返回查找到的学生
     */
    StudentEntity selectStudentById(String id);

    /**
     * 根据id修改学生
     * @param id 学号
     * @param student 学生实体，包含要修改的值
     * @return 返回修改后的学生
     */
    StudentEntity updateStudentById(String id, StudentEntity student);


    /**
     * 查询所有学生
     * @return 返回查询结果集
     */
    List<StudentEntity> selectStudentList();

    /**
     * 分页查询
     * @param size 每页数量
     * @param pageNumber 第几页
     * @return 返回该页所有数据
     */
    List<StudentEntity> pagingQuery(int size, int pageNumber);

    /**
     * 查询学生数据条数
     * @return 返回学生数据条数
     */
    int count();

    /**
     * 删除学生
     * @param studentId
     * @return
     */
    boolean dropStudent(String studentId);

    /**
     * 管理员添加学生
     * @param student
     * @return
     */
    boolean addStudent(StudentEntity student);

    /**
     * 第一次登陆初始化密码
     * @param id
     * @param password
     * @return
     */
    boolean initPassword(String id, String password);

    /**
     * 修改个人信息
     * @param student
     * @return
     */
    StudentEntity modifyStudentById(StudentEntity student);
}
